package DataStructure.linkList;

/**
 * 83. 删除排序链表中的重复元素 https://leetcode.cn/problems/remove-duplicates-from-sorted-list
 * 题目简述：给定一个已排序的链表的头head，删除所有重复的元素，使每个元素只出现一次。返回已排序的链表。
 */
public class DeleteDuplicates {

    /**
     * 思路：双指针。初始前指针p1指向head，后指针p2指向head.next。
     * 然后一起移动，若p2指向的元素值与p1相同，则删除p2指向的元素，并将p2向后移动，将p1.next再指向p2。重复直到p2指向null
     */
    public ListNode deleteDuplicates(ListNode head) {
        if(head == null || head.next == null) return head;
        ListNode p1=head, p2=head.next;
        while(p2 != null) {
            if(p2.val == p1.val) {
                p2 = p2.next;
                p1.next = p2;
            } else {
                p1 = p2;
                p2 = p2.next;
            }
        }
        return head;
    }
}
